<?php
    namespace Home\Controller;

    use \Think\Controller;

    class AnswerController extends HomeController
    {
        // 回答首页
        public function index()
        {
            if (!empty($_GET['qid']) && intval($_GET['qid']) >0 ) {
                $qid = intval($_GET['qid']);
            } else {
                $this->error('非法的问题id...');
                exit;
            }
            $this->assign('qid', $qid);
            $this->assign('title', '回答 - 知乎');
            $this->display('Answer/index');
        }
            

        // 新增回答
        public function add()
        {
            foreach ($_POST as $val) {
                if ($val == '') {
                    $this->error('请完善您的表单数据...');
                    exit;
                }
            }
            // 获取表单信息
             if (!empty($_POST['qid']) && intval($_POST['qid']) >0 ) {
                $qid = intval($_POST['qid']);
                //查询问题表,确定问题id是否存在 不存在则返回
                if (!M('question')->where('id='.$qid)->find()) {
                    $this->error('问题不存在...');
                    exit;
                }
            } else {
                $this->error('非法的问题id...');
                exit;
            }

            $data = array();
            $data['question_id'] = $qid;
            $data['user_id'] = $_SESSION['home']['id'];
            // 文件内容,不存数据库,写入文件
            $content = htmlentities($_POST['content']);
            //剥去标签 转义截取片段存到数据库
            $data['part'] = substr(htmlentities(strip_tags($_POST['content'])),0, 210); 

            //生成文件名
            $saveName = date('Ymd').uniqid().'.txt';
            $datetime = date('Y-m-d H:i:s');
            // name 作为 保存的文本文件名字
            $data['filename'] = $saveName;
            $data['datetime'] = $datetime;

            //生成保存路径
            $savePath = './Data/'.date('Y/m/d/');
            //判断路径是否存在
            if (!file_exists($savePath)) {
                mkdir($savePath,0777,true);
            }

            // 内容写入文件 ,成功则写入数据库
            if(file_put_contents($savePath.$saveName, $content)) {
                // 信息写入数据库
                $id = M('answer')->add($data);
                if ($id > 0) {
                    M('question')->where('id='.$qid)->setInc('answer_num', 1);
                    $this->redirect('Question/detail','qid='.$qid.'&aid='.$id, 0, '提交成功');
                } else {
                    $this->error('数据库写入出错...请您重新编辑提交');
                    exit;
                }
            } else {
                $this->error('文件保存出错...请您重新编辑提交');
                exit;
            }

        }




        // 编辑
        public function edit()
        {
            if (!empty($_GET['aid']) && intval($_GET['aid'])>0) {
                $aid = intval($_GET['aid']);
                $a = M('answer');
                // $where = "a.id='{$aid}' AND u.id=a.user_id AND a.display=1" ;
                $data = $a->field('id aid,question_id qid, filename afile,user_id auid, datetime atime')->where('id='.$aid)->select();
                
                if (!empty($data[0])) {

                    // 判断登录用户
                    if ($data[0]['auid'] != $_SESSION['home']['id']) {
                        $this->error('不是你所写的答案...');
                        exit;
                    }

                    // 拼接回答文件路径
                    $path = './Data/'.substr($data[0]['afile'],0,4).'/'.substr($data[0]['afile'], 4,2).'/'.substr($data[0]['afile'],6,2).'/'.$data[0]['afile'];
                    // echo $path;
                    $data[0]['acontent'] = html_entity_decode(file_get_contents($path));
                    
                    $data[0]['acontent'] = preg_replace('/width=".*?"/', 'width="100%"', $data[0]['acontent']);
                    $data[0]['acontent'] = str_replace('alt=""', 'width="100%"', $data[0]['acontent']);

                    // var_dump($data);
                    $this->assign('title', '修改答案 - 知乎');
                    $this->assign('data',$data);
                    $this->display('Answer/edit');
                } else {
                    $this->error('答案id非法...');
                }

            }
        }


        // 处理编辑的内容
        public function save()
        {
            foreach ($_POST as $val) {
                if ($val == '') {
                    $this->error('请完善您的表单数据...');
                    exit;
                }
            }
            // 获取表单信息
             if (!empty($_POST['qid']) && intval($_POST['qid']) >0 ) {
                $qid = intval($_POST['qid']);
                //查询问题表,确定问题id是否存在 不存在则返回
                if (!M('question')->where('id='.$qid)->find()) {
                    $this->error('问题不存在...');
                    exit;
                }
            } else {
                $this->error('非法的问题id...');
                exit;
            }

            if (!empty($_POST['aid']) && intval($_POST['aid']) >0 ) {
                $aid = intval($_POST['aid']);
            } else {
                $this->error('非法的答案id...');
                exit;
            }

            // 查询回答表
            // 得到原文件路径
            $name = M('answer')->where('id='.$aid)->getField('filename');
            $file = './Data/'.substr($name, 0, 4) .'/'.substr($name, 4, 2).'/'.substr($name, 6, 2) .'/'.$name;

            //其实还有 正则进行图片的删除判断

            // var_dump($file);exit;
            $data = array();
            $data['question_id'] = $qid;
            $data['user_id'] = $_SESSION['home']['id'];
            // 文件内容,不存数据库,写入文件
            $content = htmlentities($_POST['content']);
            //剥去标签 转义截取片段存到数据库
            $data['part'] = substr(htmlentities(strip_tags($_POST['content'])),0, 210); 
            $data['part'] = str_replace('&nbsp;', '', $data['part']);
            //生成文件名
            $saveName = date('Ymd').uniqid().'.txt';
            $datetime = date('Y-m-d H:i:s');
            // name 作为 保存的文本文件名字
            $data['filename'] = $saveName;
            $data['datetime'] = $datetime;

            //生成保存路径
            $savePath = './Data/'.date('Y/m/d/');
            //判断路径是否存在
            if (!file_exists($savePath)) {
                mkdir($savePath,0777,true);
            }

            // 内容写入文件 ,成功则写入数据库
            if(file_put_contents($savePath.$saveName, $content)) {
                // 信息写入数据库
                $row = M('answer')->where('id='.$aid)->save($data);
                if ($row > 0) {
                    // 删除原来的 文件
                    @unlink($file);

                    $this->redirect('Question/detail','qid='.$qid.'&aid='.$aid, 0, '提交成功');
                } else {
                    $this->error('数据库写入出错...请您重新编辑提交');
                    exit;
                }
            } else {
                $this->error('文件保存出错...请您重新编辑提交');
                exit;
            }

    
        }






    }

